package org.custom.spring.boot.mybatis.plugin;

import org.apache.ibatis.plugin.Invocation;
import org.custom.spring.boot.mybatis.service.plugin.algorithm.MybatisAlgorithm;
import org.custom.spring.boot.mybatis.service.plugin.process.MybatisProcessor;

/**
 * mybatis插件接口
 *
 * @author 李坤
 * @date 2022/2/11 10:56
 */
public interface MybatisPlugin {
    /**
     * 获取SQL与代理对象逻辑接口实现
     *
     * @return 逻辑接口实现
     */
    MybatisProcessor obtainProcess();

    /**
     * 获取插件逻辑接口实现
     *
     * @return 插件逻辑实现
     */
    MybatisAlgorithm obtainMybatisAlgorithm();

    /**
     * 判断是否执行插件逻辑
     *
     * @param invocation 插件代理对象
     *
     * @return 判断结果
     */
    default boolean determineWhether2Execute(Invocation invocation) {
        return true;
    }
}
